home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C07 / Mem.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  785 b   |  39 lines

  1. //: C07:Mem.cpp {O}
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. #include "Mem.h"
  7. #include <cstring>
  8. using namespace std;
  9.  
  10. Mem::Mem() { mem = 0; size = 0; }
  11.  
  12. Mem::Mem(int sz) {
  13.   mem = 0;
  14.   size = 0;
  15.   ensureMinSize(sz); 
  16. }
  17.  
  18. Mem::~Mem() { delete []mem; }
  19.  
  20. int Mem::msize() { return size; }
  21.  
  22. void Mem::ensureMinSize(int minSize) {
  23.   if(size < minSize) {
  24.     byte* newmem = new byte[minSize];
  25.     memset(newmem + size, 0, minSize - size);
  26.     memcpy(newmem, mem, size);
  27.     delete []mem;
  28.     mem = newmem;
  29.     size = minSize;
  30.   }
  31. }
  32.  
  33. byte* Mem::pointer() { return mem; }
  34.  
  35. byte* Mem::pointer(int minSize) {
  36.   ensureMinSize(minSize);
  37.   return mem; 
  38. } ///:~
  39.